home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / AUDIO / AUDIO / UNIT1.PAS < prev   
Pascal/Delphi Source File  |  1996-08-20  |  2KB  |  91 lines

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   audio, StdCtrls, ExtCtrls, mmsystem;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Button1: TButton;
  12.     Button2: TButton;
  13.     Panel1: TPanel;
  14.     WaveIn1: TWaveIn;
  15.     WaveOut1: TWaveOut;
  16.     Button3: TButton;
  17.     procedure Button1Click(Sender: TObject);
  18.     procedure Button2Click(Sender: TObject);
  19.     procedure WaveIn1WaveInData(Data: PChar; Size: Integer);
  20.     procedure FormCreate(Sender: TObject);
  21.     procedure Button3Click(Sender: TObject);
  22.     procedure WaveOut1WaveOutDone(Sender: TObject);
  23.     procedure FormDestroy(Sender: TObject);
  24.   private
  25.     { Private declarations }
  26.   public
  27.     { Public declarations }
  28.   end;
  29.  
  30. var
  31.   Form1: TForm1;
  32.  
  33. implementation
  34.  
  35. uses msacm32;
  36.  
  37. Var
  38.  i : integer;
  39.  PAudioBuf, AudioBuf : PChar;
  40.  
  41. {$R *.DFM}
  42.  
  43. procedure TForm1.FormCreate(Sender: TObject);
  44. begin
  45.  GetMem(AudioBuf, 200000);
  46.  PAudioBuf := AudioBuf;
  47. end;
  48.  
  49. procedure TForm1.FormDestroy(Sender: TObject);
  50. begin
  51.  FreeMem(AudioBuf);
  52. end;
  53.  
  54. procedure TForm1.WaveIn1WaveInData(Data: PChar; Size: Integer);
  55. begin
  56.   inc(I, Size);
  57.   Panel1.Caption := Format('%d Bytes recorded', [i]);
  58.   move(Data^, PAudioBuf^, size);
  59.   inc(PAudioBuf, Size);
  60. end;
  61.  
  62. procedure TForm1.Button3Click(Sender: TObject);
  63. Var
  64.  Size : Integer;
  65. begin
  66.   Size := Abs(Integer(PAudioBuf) - Integer(AudioBuf) ) ;
  67.   PAudioBuf := AudioBuf;
  68.   WaveOut1.Open;
  69.   WaveOut1.PlayBack(AudioBuf, Size);
  70. end;
  71.  
  72. procedure TForm1.WaveOut1WaveOutDone(Sender: TObject);
  73. begin
  74.   WaveOut1.Close;
  75. end;
  76.  
  77. procedure TForm1.Button1Click(Sender: TObject);
  78. begin
  79.  i := 0;
  80.  // You may use WaveIn1.Open method also 
  81.  wavein1.Recording := True;
  82. end;
  83.  
  84. procedure TForm1.Button2Click(Sender: TObject);
  85. begin
  86.  wavein1.Recording := False;
  87. end;
  88.  
  89.  
  90. end.
  91.